Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

564
Views
La ejecución de una biblioteca JS empaquetada en un paquete web con el sistema de módulos "umd" en Nodejs arroja un error: "self" no está definido

Recientemente, he estado desarrollando una biblioteca de JavaScript y ahora quiero publicarla en npm. Luego aprendí que tengo que usar un empaquetador de paquetes. Así que comencé a aprender webpack y seguí su guía Creación de una biblioteca de los documentos.

En su guía, sugirieron usar el tipo de módulo umd para admitir todos los sistemas de módulos, así que usé "umd". Pero cuando traté de ejecutar (a través de la importación ) el archivo de paquete generado en Node.js , arroja una excepción que dice " self está definido" . Luego abrí el archivo incluido y descubrí que hay una variable llamada self pero no sé cuál es su propósito.

En pocas palabras, probé el tipo de módulo commonjs y commonjs2 y publiqué un paquete de prueba y lo probé tanto en el entorno de reacción como en el de nodo y funcionó perfectamente. Lamentablemente, no funcionó en el entorno del navegador con la etiqueta <script> . Ahora mi pregunta es ¿qué tipo de módulo debo usar?

Aquí está mi webpack.config.js

 const path = require("path"); module.exports = { mode: "production", entry: "./src/index.js", output: { path: path.resolve(__dirname, "dist"), filename: "index.js", library: { type: "commonjs", // umd, commonjs2, .... }, }, };

Aquí está la estructura de mi proyecto.

 |- /dist |- /src |- package.json |- webpack.config.json

Versiones de paquetes web:

 "webpack": "^5.53.0" "webpack-cli": "^4.8.0"

Gracias por adelantado. Aprecio mucho su tiempo en StackOverflow <3.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Después de perder mucho tiempo, encontré la respuesta en un problema de github de webpack.

Puedo usar library.type: "umd" pero solo tengo que agregar lo siguiente en la configuración de mi paquete web.

 module.exports = { output: { globalObject: 'this' // This line was missing } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!